package com.jch.dm.chapter_11_composite;

import java.util.ArrayList;
import java.util.Iterator;

/**
 * @author: jch
 * 复合模式 示例 文件夹类
 **/
public class Directory extends Entry {
    /**
     * 文件夹名
     */
    private String name;
    /**
     * 文件夹内条目的集合
     */
    private ArrayList directory = new ArrayList();

    public Directory(String name) {
        this.name = name;
    }

    /**
     * 获取名称
     *
     * @return string
     */
    @Override
    public String getName() {
        return name;
    }

    /**
     * 获取大小
     *
     * @return int
     */
    @Override
    public int getSize() {
        int size = 0;
        Iterator it = directory.iterator();
        while (it.hasNext()) {
            Entry entry = (Entry) it.next();
            size += entry.getSize();
        }
        return size;
    }

    @Override
    public Entry add(Entry entry) {
        directory.add(entry);
        return this;
    }

    /**
     * 为条目加上前缀 并 显示条目一览
     *
     * @param prefix 前缀
     */
    @Override
    protected void printList(String prefix) {
        System.out.println(prefix + "/" + this);
        Iterator it = directory.iterator();
        while (it.hasNext()) {
            Entry entry = (Entry) it.next();
            entry.printList(prefix + "/" + name);
        }
    }
}
